// The MIT License(MIT)
//
// Copyright(c) 2015 Venugopalan Sreedharan
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), 
// to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
// and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions :
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


#pragma once

class ADonNavigationManager;

class FDonNavigationWorker: public FRunnable
{
	FRunnableThread* Thread;
	
	ADonNavigationManager* Manager;
	
	FThreadSafeCounter StopTaskCounter;

public:
	FDonNavigationWorker();
	FDonNavigationWorker(ADonNavigationManager* Manager, int32 MaxPathSolverIterations, int32 MaxCollisionSolverIterations);
	virtual ~FDonNavigationWorker();	

	//FRunnable interface
	virtual bool Init();
	virtual uint32 Run();
	virtual void Stop();	

	void ShutDown();

private:

	// Perform work:
	void SolveNavigationTasks();
	
	int32 MaxPathSolverIterations;
	int32 MaxCollisionSolverIterations;
};
